function outSignal = Kabum(frequency,duration,Data,Fs)
    delay = round(Fs/frequency);
   % pulse = rand(delay,1)*2-1;
    Data.attack=(1-Data.attack)*0.996;
    
    
    x = zeros(round(Fs*duration), 1);
    delay = round(Fs/frequency);
    if strcmp(Data.randomness,'gaussian')
        zi=randn(delay,1)*2-1;
    else
        zi=rand(delay,1)*2-1;
    end
    x=[zi;x(1:end-length(zi))];
    
    x2=(1-Data.attack)*x(1);
    for k=2:length(x)
        x2(k)=x(k)*(1-Data.attack)+Data.attack*x2(k-1);
    end
    %x = [pulse;zeros(round(duration*Fs)-length(pulse),1)];
    Hd = single_peak(frequency,Fs,Data.Q,1);
    outSignal = filter(Hd,x2);
    outSignal=outSignal(delay+1:end);
   

    outSignal=outSignal-mean(outSignal);
    
    
    outSignal = outSignal'/max(abs(outSignal));
    
end